import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {



        //暴力法
        //输入数组里面的数,输入0结束--未知用Arraylist
        System.out.println("输入数组里面的数,输入0结束");
        ArrayList<Integer> a = new ArrayList<>();
       while (true) {
            Scanner input = new Scanner(System.in);
            int n = input.nextInt();
            if (n != 0) {
                a.add(n);
            } else {
                break;
            }
        }
      System.out.println(a);//输出Arraylist
        System.out.println("输入目标值");
        Scanner input = new Scanner(System.in);
        int target = input.nextInt();

 /* for(int i=1;i<10000;i++){

      a.add(i);
  }
int target=10000;*/
        //1.先把数组中大于目标的数排除
        long d=System.currentTimeMillis();//毫秒

  /*      int m = a.size();
        ArrayList<Integer> b = new ArrayList<>();//创建个新的Arraylist 存储数据
        for (int i = 0; i < m; i++) {
            int q = a.get(i);//中间值
            if (q < target) {
                b.add(q);
            }
        }
        System.out.println(b);

        //遍历法

       for (int i = 0; i < b.size(); i++) {
            for (int j = i + 1; j <= b.size() - 1; j++) {
                int p=b.get(i) + b.get(j);
                if (p== target) {
                    System.out.println(i + "   " + j);

                }
            }

        }
       long w=System.currentTimeMillis();

        System.out.println("程序运行时间： "+(d-w)+"毫秒");*/

        //哈希法



           Map<Integer, Integer> c = new HashMap<Integer,Integer>(); // 创建一个哈希表存储已经遍历过的元素和它们的索引
            for (int i = 0; i < a.size() ; i++) { // 遍历整数数组
                if (c.containsKey(target - a.get(i))) { // 如果目标值减去当前元素的差值在哈希表中存在
                  System.out.println(c.get(target-a.get(i))+"    "+i);// 返回这两个数的索引组成的数组
                }

                c.put(a.get(i), i); // 将当前元素存入哈希表，key为元素值，value为索引
            }
        //System.out.println(0); // 没有找到满足条件的两个数，返回一个空数组
        long B=System.currentTimeMillis();

        System.out.println("程序运行时间： "+(d-B)+"纳秒");
       }
    }